package componentes;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * @author Reynald0
 */
public class CompJoyStick2 extends JPanel implements KeyListener, MouseMotionListener
{
   private JLabel  lNorte,lSur,lEste,lOeste,l1,l3,l7,l9;
   private JButton bCentro;
   private int mX, mY;
   
   public CompJoyStick2(JPanel pPanel, KeyListener pMovimiento) {
      l1 = new JLabel("Noroeste");
      l1.setHorizontalAlignment(JLabel.CENTER);
      l3 = new JLabel("Noreste");
      l3.setHorizontalAlignment(JLabel.CENTER);
      l7 = new JLabel("Suroeste");
      l7.setHorizontalAlignment(JLabel.CENTER);
      l9 = new JLabel("Sureste");
      l9.setHorizontalAlignment(JLabel.CENTER);
      lNorte = new JLabel("Norte");
      lNorte.setHorizontalAlignment(JLabel.CENTER);
      lNorte.setOpaque(true);
      lSur = new JLabel("Sur");
      lSur.setHorizontalAlignment(JLabel.CENTER);
      bCentro = new JButton();
      lEste = new JLabel("Este");
      lEste.setHorizontalAlignment(JLabel.CENTER);
      lOeste = new JLabel("Oeste");
      lOeste.setHorizontalAlignment(JLabel.CENTER);
      this.setLayout(new GridLayout(3,3,10,10));
      this.add(l1);
      this.add(lNorte);
      this.add(l3);
      this.add(lEste);
      this.add(bCentro);
      this.add(lOeste);
      this.add(l7);
      this.add(lSur);
      this.add(l9);
      bCentro.addKeyListener(this);
      addMouseMotionListener(this);
      if(pPanel != null) pPanel.add(this);
   }

   public void keyTyped(KeyEvent pE)
   {
   }

   public void keyPressed(KeyEvent pE)
   {
         if(pE.getKeyCode()==KeyEvent.VK_UP)     
      {
            this.add(l1);
            this.add(bCentro);
            this.add(l3);
            this.add(lEste);
            this.add(lNorte);
            this.add(lOeste);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
         bCentro.setText("Norte");
         lNorte.setText("Centro");
      }
         else if(pE.getKeyCode()==KeyEvent.VK_DOWN) 
         {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(lSur);
            this.add(lOeste);
            this.add(l7);
            this.add(bCentro);
            this.add(l9);
            bCentro.setText("Sur"); 
            lSur.setText("Centro");
            }
         else if(pE.getKeyCode()==KeyEvent.VK_LEFT) 
         {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(bCentro);
            this.add(lEste);
            this.add(lOeste);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Oeste"); 
            lOeste.setText("Centro");
         }
         else if(pE.getKeyCode()==KeyEvent.VK_RIGHT) 
         {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(lOeste);
            this.add(bCentro);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Este"); 
            lEste.setText("Centro");
         }
         
      super.doLayout();
   }

   public void keyReleased(KeyEvent pE)
   {
      if(pE.getKeyCode()==KeyEvent.VK_UP)     
      {
      this.add(lNorte, BorderLayout.NORTH);
      this.add(lSur, BorderLayout.SOUTH);
      this.add(bCentro, BorderLayout.CENTER);
      this.add(lEste, BorderLayout.EAST);
      this.add(lOeste, BorderLayout.WEST); 
      }
   }

   public void mouseDragged(MouseEvent pMe)
   {    
      mouseMoved(pMe);
   }

   public void mouseMoved(MouseEvent pME)
   {
      mX = (int) pME.getPoint().getX();
      mY = (int) pME.getPoint().getY();
      //System.out.println(mX +"," + mY);
      if ((mX >0 && mX <220) && (mY >0 && mY <86))
      {
            this.add(bCentro);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(l1);
            this.add(lOeste);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Noreste"); 
      }
      else if ((mX >229 && mX <452) && (mY >0 && mY <86))
      {
         this.add(l1);
         this.add(bCentro);
         this.add(l3);
         this.add(lEste);
         this.add(lNorte);
         this.add(lOeste);
         this.add(l7);
         this.add(lSur);
         this.add(l9);
         bCentro.setText("Norte"); 
   }
      else if ((mX >462 && mX <683) && (mY >0 && mY <86))
      {
         this.add(l1);
         this.add(lNorte);
         this.add(bCentro);
         this.add(lEste);
         this.add(l3);
         this.add(lOeste);
         this.add(l7);
         this.add(lSur);
         this.add(l9);
         bCentro.setText("Noroeste"); 
   }
      else if ((mX >0 && mX <220) && (mY >96 && mY <182))
      {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(bCentro);
            this.add(lEste);
            this.add(lOeste);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Este"); 
      }
      else if ((mX >452 && mX <684) && (mY >96 && mY <182))
      {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(lOeste);
            this.add(bCentro);
            this.add(l7);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Oeste"); 
      }
      else if ((mX >0 && mX <220) && (mY >192 && mY <278))
      {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(l7);
            this.add(lOeste);
            this.add(bCentro);
            this.add(lSur);
            this.add(l9);
            bCentro.setText("Suroeste"); 
      }
      else if ((mX >229 && mX <452) && (mY >192 && mY <278))
      {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(lSur);
            this.add(lOeste);
            this.add(l7);
            this.add(bCentro);
            this.add(l9);
            bCentro.setText("Sur"); 
      }
      else if ((mX >452 && mX <684) && (mY >192 && mY <278))
      {
            this.add(l1);
            this.add(lNorte);
            this.add(l3);
            this.add(lEste);
            this.add(l9);
            this.add(lOeste);
            this.add(l7);
            this.add(lSur);
            this.add(bCentro);
            bCentro.setText("Suroeste"); 
      }
      else
      {
         this.add(l1);
         this.add(lNorte);
         this.add(l3);
         this.add(lEste);
         this.add(bCentro);
         this.add(lOeste);
         this.add(l7);
         this.add(lSur);
         this.add(l9);
         bCentro.setText("");
      }
      
     super.doLayout();
   }


  
}